Skip Headers

Oracle® Database Backup and Recovery Advanced User's Guide 10g Release 2 (10.2) Part Number B14191-02 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next
| View PDF

# Tests and Integrity Checks for Backups

The database prevents operations that result in unusable backup files or corrupt restored datafiles. The database server automatically does the following:

- Blocks access to datafiles while they are being restored or recovered

- Allows only one restore operation for each datafile at a time

- Ensures that incremental backups are applied in the correct order

- Stores information in backup files to allow detection of corruption

You can use the `BACKUP` `VALIDATE` and `RESTORE` `VALIDATE` commands to test backup and restore operations without creating output files. In this way, you can check your datafiles for possible problems. If you run RMAN with the following configuration, then it detects all types of corruption that are possible to detect:

- In the initialization parameter file, set `DB_BLOCK_CHECKSUM=TRUE`

- In the RMAN `BACKUP` and `RESTORE` commands, do not specify the `MAXCORRUPT` option, do not specify the `NOCHECKSUM` option, but do specify the `CHECK` `LOGICAL` option

See Oracle Database Backup and Recovery Basics for more details on `BACKUP VALIDATE` and `RESTORE VALIDATE`.

## Detecting Physical Block Corruption With RMAN BACKUP... VALIDATE

RMAN depends upon database server sessions to perform backups, and the database server can detect many types of physically corrupt blocks during the backup process. Each new corrupt block not previously encountered in a backup is recorded in the control file and in the `alert.log`. By default, error checking for physical corruption is enabled.

At the end of a backup, RMAN stores the corruption information in the recovery catalog and control file. Access this data using the `V$DATABASE_BLOCK_CORRUPTION` view.

If the server session encounters a datafile block during a backup that has already been identified as corrupt by the database, then the server session copies the corrupt block into the backup and the corrupt block is recorded the control file as either a logical or media corruption. RMAN copies the block in case the user wants to try to salvage the contents of the block.

If RMAN encounters a datafile block that has media corruption but that has not already been identified as corrupt by the database, then it writes the block to the backup with a reformatted header indicating that the block has media corruption.

## Detection of Logical Block Corruption

Besides testing for media corruption, the database can also test data and index blocks for logical corruption, such as corruption of a row piece or index entry. If RMAN finds logical corruption, then it logs the block in the alert.log. If `CHECK LOGICAL` was used, the block is also logged in the server session trace file. By default, error checking for logical corruption is disabled.

For `BACKUP` commands the `MAXCORRUPT` parameter sets the total number of physical and logical corruptions permitted in a file. If the sum of physical and logical corruptions for a file is less than its `MAXCORRUPT` setting, the RMAN command completes successfully. If `MAXCORRUPT` is exceeded, the command terminates and RMAN does not read the rest of the file. `V$DATABASE_BLOCK_CORRUPTION` is populated with corrupt block ranges if the command succeeds. Otherwise, you must set `MAXCORRUPT` higher and re-run the backup to find out the corrupt block ranges.

See Also: Oracle Database Backup and Recovery Reference for `BACKUP` `...` `MAXCORRUPT` syntax

## Detection of Fractured Blocks During Open Backups

One danger in making online backups is the possibility of inconsistent data within a block. For example, assume that you are backing up block 100 in datafile `users.dbf`. Also, assume that the copy utility reads the entire block while DBWR is in the middle of updating the block. In this case, the copy utility may read the old data in the top half of the block and the new data in the bottom top half of the block. The result is called a fractured block, meaning that the data contained in this block is not consistent. at a given SCN.

When performing backups of an open tablespace without using RMAN, you must put tablespaces in backup mode to prevent the creation of fractured blocks in your backup. When not in backup mode, the database records only changed bytes in the redo stream. When a tablespace is in backup mode, each time a block is changed the datbase writes the before-image ofthe entire block to the redo stream before modifying the block. Then, the database also records the changes to the block in the redo log. During user-managed recovery using SQL*Plus, the database applies both the captured block images and the recorded block changes from the redo logs. Applying the block images repairs any possible fractured blocks in the backup being restored and recovered.

RMAN does not require that you put datafiles into backup mode. During an RMAN backup, a database server session reads each block of the datafile and checks whether each block is fractured by comparing the block header and footer. If a block is fractured, the session re-reads the block. If the same fracture is found, then the block is considered permanently corrupt. If `MAXCORRUPT` is exceeded, the backup stops.

## Backup Validation with RMAN

You can run the `BACKUP` `...` `VALIDATE` command to check datafiles for physical and logical corruption, or to confirm that all database files exist in the correct locations. No backup is taken, but all specified files are scanned to verify that they can be backed up. All corruptions are recorded in the`V$DATABASE_BLOCK_CORRUPTION` view.

The following example shows how to check your entire database and archived redo log files for physical and logical corruption:

    BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;

You cannot use the `MAXCORRUPT` or `PROXY` parameters with the `VALIDATE` option.

See Also: Oracle Database Backup and Recovery Reference for `BACKUP` syntax and "Validating Backups with RMAN" for more details on using `BACKUP VALIDATE`.